Many software developers use interactive development environments (IDEs) in order to develop software. The developers use an IDE in order to develop models of types within a computer system, and in order to customize those models.
An exemplary integrated development environment is illustratively a development tool or development environment that includes a plurality of different tools so that developers can develop and test the code that needs to be developed and in order to customize a computer system as desired. By way of example, an IDE may include a source code editor, one or more build automation tools and a debugger that allow computer programmers to develop software. Some IDEs illustratively include a compiler, an interpreter, or both. They may include a version control system and various tools to simplify the construction of graphical user interfaces. They can also include a class browser, an object browser, and a class hierarchy diagram for use with object oriented software development. Thus, developers can use IDEs to generate the code and metadata, along with customizations to code and metadata, that may be utilized in developing a system for use in a given organization.
In generating or customizing software using an IDE, the application developer models specific concepts (also referred to as types) within an application and, where necessary, writes code. Large applications, for which developers often use IDEs, can include thousands of different types. Thus, developing and customizing these types is a relatively large task.
By way of example, some computer systems include business systems, such as enterprise resource planning (ERP) systems, customer relations management (CRM) systems, line-of-business (LOB) systems, among others. These types of computer systems often have many thousands of different types that are modeled and customized. By way of example, some such business systems often have thousands of different forms, alone, not to mention many other types.
Business systems are not the only types of computer systems that have a large number of types. For instance, gaming systems, or a wide variety of other types of systems, often also have many thousands of different types that are modeled in the software system.
Such computer systems can be represented by interpreted code or compiled code. As a developer is developing or customizing compiled code, the developer often wishes to work on the development or customizations, and then run the code to make sure that it is working as the developer desires. In a compiled code environment, this has required the compiler to recompile the entire system, in order to run the system with the newly developed or customized code. The reason is that, currently, a compiler is largely just an executable that runs when compilation is needed. When compilation is finished, the compiler loses its memory and any cache it has built. In the development environment, this can be very time consuming and can add time and cost to the development phase of a project, and it can also lead to frustration in the developer experience.
The discussion above is merely provided for general background information and is not intended to be used as an aid in determining the scope of the claimed subject matter.